package br.edu.delta.service;

import java.util.Collection;

import javax.inject.Inject;

import br.edu.delta.bo.LivroBO;
import br.edu.delta.exception.NegocioException;
import br.edu.delta.model.Livro;
import br.edu.delta.util.Util;

/**
 * <p>
 * <b>Title:</b> LivroService
 * </p>
 * 
 * <p>
 * <b>Description:</b> LivroService
 * </p>
 * 
 * <p>
 * <b>Company: </b>
 * </p>
 * 
 * @author Denis
 * 
 * @version 1.0.0
 */
public class LivroService extends AppService<Livro, LivroBO> {

	/** Atributo serialVersionUID. */
	private static final long serialVersionUID = 1L;

	/** Atributo bo. */
	@Inject
	private LivroBO bo;

	/**
	 * @see br.com.javagyn.service.base.Service#getBo()
	 */
	@Override
	public LivroBO getBo() {

		return this.bo;
	}

	public Collection<String> pesquisarLivrosPorNome(String nome) {

		return getBo().pesquisarLivrosPorNome(nome);
	}

	public Livro pesquisarLivroPorCodigo(Long codigo) {

		return getBo().pesquisarLivroPorCodigo(codigo);
	}

	public Livro pesquisarLivroPorNome(String nome) {

		return getBo().pesquisarLivroPorNome(nome);
	}

	public void salvarLivro(Livro entidade) throws NegocioException {

		if (Util.isNullOuVazio(entidade.getId()) && this.getBo().verificarCodigoLivroJaCadastrado(entidade.getCodigo())) {
			
			throw new NegocioException("Código '" + entidade.getCodigo() + "' do Livro já está Cadastrado.");
		}

		this.getBo().salvar(entidade);
	}

}
